import requests

from bs4 import BeautifulSoup
import  csv


# ————————————————
# 测试能够链接网页成功并且能够获取到网页的HTML文件成功之后，进行每个网页的分析活动。
# 先手写两个，之后熟悉过程【单页面+单页面进去第二级页面】之后，采用爬虫插件scrapy进行后续的操作。
# ————————————————

# 现在已经有了的：全国展会信息的网页 https://m.onezh.com/zhanhui/1_0_0_0_0/0/%E6%B1%BD%E8%BD%A6

# Step 1: 访问网页并获取响应内容
def get_html_content(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        response.encoding = response.apparent_encoding
        html_content = response.text
        return html_content
    except Exception as e:
        print(f"网络请求异常：{e}")
        return None

# Step 2: 解析网页并提取目标数据
def parse_html_01(html_content):
    Quanguozhanhui_preurl = 'https://m.onezh.com/'
    #csv文件
    # with open('output20230904-模板展会信息.csv','w',newline='') as file:
    #     writer = csv.writer(file)
    #     writer.writerow(['序号','月份','展会','类别','举办地','举办时间','举办展馆','展品范围','主办机构','机构性质','重要度', '展会网址','说明','统计'])

    soup = BeautifulSoup(html_content, 'html.parser')

    print(type(soup))
    carList = soup.find_all('a', attrs={'class': 'mlcCar'})
    print(type(carList))

    # carimg = carList.find_all('img') 语法不行 element不能用find_all


    # 遍历a标签列表，进行每个展会信息item_a的输出
    for item_a in carList:
        # print(type(item_a))           ——bs4.element.Tag
        # select返回的是一个列表
        # the_img=item_a.select("div[class='mlcclPic'] img")
        the_name = item_a.select("div[class='mlccRight'] h2[class='mlccrTitle']")
        the_date = item_a.select("div[class='mlccRight'] p[class='mlccrTime']")
        the_local = item_a.select("div[class='mlccRight'] span[class='mlccrpPrice']")

        print("展会的名字：",the_name[0].string)
        # print("展会的图片地址：",the_img[0]['src'])
        print("展会的日期：",the_date[0].string)
        print("展会的开展地址：",the_local[0].string.strip())
        print("展会的网页地址：",Quanguozhanhui_preurl+item_a['href'])

        #     写入CSV
        writer.writerow(['','',the_name[0].string,'',the_local[0].string.strip(),the_date[0].string,'','','','','',Quanguozhanhui_preurl+item_a['href'],'',''])

    return carList

def parse_html_02(html_content):
    Shizhanwang_preurl = 'https://www.shifair.com/'
    soup = BeautifulSoup(html_content, 'html.parser')

    # 001 世展网的提取 关键词“汽车”
    carList = soup.find_all('div', attrs={'class': 'info_list_block_item'})
    print(carList[0])
    for item in carList:
        the_name = item.select("div[class='info_list_block_item_info'] h2[class='info_list_block_item_info_title'] a")
        the_date = item.select("div[class='info_list_block_item_info'] div[class='info_list_block_item_info_time']")

        print("展会的名字：", the_name[0].string)
        print("展会的日期：", the_date[0].string)
        print("展会的开展地址：没有地址")
        print("展会的网页地址：", Shizhanwang_preurl + the_name[0]['href'])
#     写入CSV
        writer.writerow(['','',the_name[0].string,'','',the_date[0].string,'','','','','',Shizhanwang_preurl + the_name[0]['href'],'',''])

    return carList
# Step 4: 控制流程，调用上述函数完成数据抓取任务
if __name__ == '__main__':
    file = open('output20230904-两个网页汇总版模板展会信息.csv','w',newline='',encoding='utf-8')
    writer = csv.writer(file)
    writer.writerow(
        ['序号', '月份', '展会', '类别', '举办地', '举办时间', '举办展馆', '展品范围', '主办机构', '机构性质', '重要度',
         '展会网址', '说明', '统计'])
# 输入要爬的网址url
#     target_url = "https://ssr1.scrape.center/"
#     input_name ='车'
#     全国第一展会网
    target_url_01 = "https://m.onezh.com/zhanhui/1_0_0_0_0/0/%E6%B1%BD%E8%BD%A6"
    html_content_01 = get_html_content(target_url_01)
    if html_content_01:
        result_list = parse_html_01(html_content_01)
    else:
        print("网页访问失败")

    # 世展网
    target_url_02 = "https://www.shifair.com/search/%E6%B1%BD%E8%BD%A6/1"
    html_content_02 = get_html_content(target_url_02)
    if html_content_02:
        result_list = parse_html_02(html_content_02)
    else:
        print("网页访问失败")

    file.close()

